package com.sy.rabbit.queues;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * Created by uu on 2017/1/6.
 * 工厂任务安排者(生产者P)
 */
public class NewTask {

    private static final String TASK_QUEUE_NAME = "task_queue";

    public static  void main(String[] args) throws IOException, TimeoutException {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        //第一个参数:队列名称,第二个参数:队列是否可持久化,即重启后该队列是否依然存在,第三个参数:是否连接上时它占用整个网络连接,
        // 第四个参数:是否自动销毁即当这个队列不在被使用的时候即没有消费者对接上来时自动删除
        //第五个参数:其他参数如TTL（队列存活时间）等
        channel.queueDeclare(TASK_QUEUE_NAME,true,false,false,null);
        //发送10条消息，依次在消息后面附加1-10个点
        for (int i = 0; i < 10; i++)
        {
            String dots = "";
            for (int j = 0; j <= i; j++)
            {
                dots += ".";
            }
            String message = "helloworld" + dots+dots.length();
            //第一个参数:交换区的名字,空字符串表示这是默认的或者没有命名的交换区
            channel.basicPublish("", TASK_QUEUE_NAME, null, message.getBytes());
            System.out.println(" [x] Sent '" + message + "'");
        }
        //关闭频道和资源
        channel.close();
        connection.close();
    }

}
